package com.kyl.service;


import com.kyl.dto.DeptDto;
import com.kyl.vo.DeptVo;
import com.kyl.vo.TreeVo;
import java.util.List;

/**
 * @author WanJl
 * @version 1.0
 * @title DeptService
 * @description 部门服务接口
 * @create 2025/1/6
 */
public interface DeptService {

    /**
     * 查询部门列表
     * @param deptDto
     * @return
     */
    List<DeptVo> findDeptList(DeptDto deptDto);

    /**
     * 新增部门
     * @param deptDto
     * @return
     */
    Boolean createDept(DeptDto deptDto);

    /**
     * 根据父部门编号创建部门编号
     * @param parentDeptNo
     * @return
     */
    String createDeptNo(String parentDeptNo);

    /**
     * 修改部门
     * @param deptDto
     * @return
     */
    Boolean updateDept(DeptDto deptDto);

    /**
     * 校验部门是否存在用户
     * @param deptNo
     * @return
     */
    boolean checkDeptExistUser(String deptNo);

    /**
     * 校验部门是否有子部门
     * @param deptNo
     * @return
     */
    boolean hasChildByDeptId(String deptNo);

    /**
     * 删除部门
     * @param deptId
     * @return
     */
    Boolean removeDept(String deptId);

    /**
     * 启用-禁用部门
     * @param deptDto
     * @return
     */
    Boolean isEnableDept(DeptDto deptDto);

    /**
     * 树形展示
     * @return
     */
    TreeVo deptTreeVo();

    /**
     * 根据部门编号查询部门
     * @param deptNos
     * @return
     */
    List<DeptVo> findDeptInDeptNos(List<String> deptNos);

    /**
     * 根据角色id查询部门
     * @param roleIdSet
     * @return
     */
    List<DeptVo> findDeptVoListInRoleId(List<Long> roleIdSet);
}
